#!/usr/bin/env node

/**
 * 测试案件生成工具的独立脚本
 * 用于验证工具是否能正常工作，不依赖AI Agent
 */

async function testCaseGeneration() {
  try {
    console.log('开始测试案件生成工具...');
    
    // 动态导入工具
    const { caseGenerationTool } = await import('./src/mastra/tools/case-generation.tool.ts');
    
    console.log('工具导入成功');
    
    // 测试不同难度的案件生成
    const testCases = [
      { difficulty: 'easy', theme: '办公室', suspectCount: 3 },
      { difficulty: 'normal', theme: '学校', suspectCount: 4 },
      { difficulty: 'hard', theme: '酒店', suspectCount: 5 }
    ];
    
    for (const testCase of testCases) {
      console.log(`\n测试案件: ${JSON.stringify(testCase)}`);
      
      try {
        const result = await caseGenerationTool.execute({
          context: testCase
        });
        
        console.log('✅ 案件生成成功');
        console.log(`案件标题: ${result.case.title}`);
        console.log(`嫌疑人数量: ${result.suspects.length}`);
        console.log(`线索数量: ${result.initialClues.length}`);
        console.log(`真凶ID: ${result.case.culpritId}`);
        
        // 验证数据完整性
        const validation = validateResult(result);
        if (validation.isValid) {
          console.log('✅ 数据验证通过');
        } else {
          console.log('❌ 数据验证失败:', validation.errors);
        }
        
      } catch (error) {
        console.error('❌ 案件生成失败:', error.message);
      }
    }
    
  } catch (error) {
    console.error('❌ 测试失败:', error);
  }
}

function validateResult(result) {
  const errors = [];
  
  if (!result.case) {
    errors.push('缺少案件信息');
  } else {
    if (!result.case.title) errors.push('缺少案件标题');
    if (!result.case.description) errors.push('缺少案件描述');
    if (!result.case.culpritId) errors.push('缺少真凶ID');
  }
  
  if (!result.suspects || !Array.isArray(result.suspects)) {
    errors.push('缺少嫌疑人信息');
  } else {
    if (result.suspects.length < 2) {
      errors.push('嫌疑人数量不足');
    }
    
    const culprit = result.suspects.find(s => s.id === result.case.culpritId);
    if (!culprit) {
      errors.push('真凶ID与嫌疑人列表不匹配');
    }
  }
  
  if (!result.initialClues || !Array.isArray(result.initialClues)) {
    errors.push('缺少线索信息');
  }
  
  return {
    isValid: errors.length === 0,
    errors
  };
}

// 运行测试
testCaseGeneration().catch(console.error);
